// pages/upload/upload.js

Page({
  data: {
    filePath: '', // 存储选择的文件路径
    cloudFilePath: '', // 存储上传后的云存储路径
    fileUrl: '' // 存储文件的临时下载链接
  },

  // 选择文件
  chooseImage() {
    wx.chooseImage({
      count: 1, // 选择一张图片
      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
      success: (res) => {
        const tempFilePaths = res.tempFilePaths;
        this.setData({
          filePath: tempFilePaths[0]
        });
      }
    });
  },

  // 上传文件
  uploadFile() {
    const that = this;
    const filePath = this.data.filePath;

    if (!filePath) {
      wx.showToast({
        title: '请先选择文件',
        icon: 'none'
      });
      return;
    }

    // 读取文件并转换为 Base64 编码
    wx.getFileSystemManager().readFile({
      filePath: filePath,
      encoding: 'base64',
      success: (res) => {
        const fileBase64 = res.data;
        const fileName = filePath.split('/').pop(); // 获取文件名

        // 调用云函数上传文件
        wx.cloud.callFunction({
          name: 'test', // 云函数名称
          data: {
            fileName,
            fileBuffer: fileBase64 // 传递 Base64 编码的文件内容
          },
          success: (res) => {
            if (res.result.success) {
              const fileID = res.result.fileID;

              // 生成文件的临时下载链接
              wx.cloud.getTempFileURL({
                fileList: [fileID], // 传递 fileID
                success: (res) => {
                  if (res.fileList[0].tempFileURL) {
                    that.setData({
                      cloudFilePath: fileID,
                      fileUrl: res.fileList[0].tempFileURL // 设置文件的临时下载链接
                    });
                    wx.showToast({
                      title: '上传成功',
                      icon: 'success'
                    });
                  } else {
                    wx.showToast({
                      title: '获取文件链接失败',
                      icon: 'none'
                    });
                  }
                },
                fail: (err) => {
                  console.error('获取文件链接失败', err);
                  wx.showToast({
                    title: '获取文件链接失败',
                    icon: 'none'
                  });
                }
              });
            } else {
              wx.showToast({
                title: '上传失败',
                icon: 'none'
              });
            }
          },
          fail: (err) => {
            console.error('云函数调用失败', err);
            wx.showToast({
              title: '上传失败',
              icon: 'none'
            });
          }
        });
      },
      fail: (err) => {
        console.error('文件读取失败', err);
        wx.showToast({
          title: '文件读取失败',
          icon: 'none'
        });
      }
    });
  },

  // 预览上传的文件
  previewFile() {
    const fileUrl = this.data.fileUrl;
    if (!fileUrl) {
      wx.showToast({
        title: '没有可预览的文件',
        icon: 'none'
      });
      return;
    }

    wx.previewImage({
      urls: [fileUrl] // 使用临时下载链接进行预览
    });
  },

  // 复制文件链接
  copyFileUrl() {
    const fileUrl = this.data.fileUrl;
    if (!fileUrl) {
      wx.showToast({
        title: '没有可复制的链接',
        icon: 'none'
      });
      return;
    }

    wx.setClipboardData({
      data: fileUrl,
      success: () => {
        wx.showToast({
          title: '链接已复制',
          icon: 'success'
        });
      }
    });
  }
});